This is why I try my damnedest not to write in weakly typed languages.
string + object makes no logical sense, but the language will be like "'no biggie, you probably meant string + string so let's convert the object to string"! And so all hell breaks loose when the language's assumption is wrong.
That kind of thing. But the principle of least surprise definitely applies. If you get to the point where you're adding two booleans and a string, I feel like the language should at least say something. At least until the technology exists for it to physically reach out of your screen and slap you.