To start off… Using arithmetic operators on strings in combination with integers is a pure skill issue. Let’s disregard this.

If you were to use + where one part is a string, it’s natural to assume a string appending is desired since + is commonly used as a function for this. On the other hand, - is never used for any string operation. Therefore, it’s safe to assume that it relates to actual artihmetics and any strings should therefore be converted to numerical values.

This is an issue with untyped languages. If you don’t like it, use typescript. End of story.

Instead of trying to make it work, javascript could just say “error.” Being untyped doesn’t mean you can’t have error messages.
This is fair enough from an idealistic view. In practice, you don’t want your entire website to shit itself because of a potentially insignificant error.
I’d rather have my website shit itself than have silent difficult to find errors.