Yeah that&#x27;s kind of the problem, those happen to be the two most commonly used operators.<p>All the other arithmetic operators try to convert too (&#x27;5&#x27; - 3 === 2), but at least produce NaN if the arguments can&#x27;t coerce to numbers (an exception would be better IMO, but whatever). Bitwise operators consider non-numeric strings to be 0, not NaN, presumably because JavaScript bitwise operands are always considered to be signed 32-bit ints. Apparently ~&#x27;js&#x27; isn&#x27;t a TypeError. ¯\_(·ω·)_&#x2F;¯