'1'+2='12';
2+'1'=3;

43

Потому что использовать один и тот же символ для математических операций и конкатенации строк в языке с динамической типизацией — суть зло.

19

Да это-то фигня, здесь хотя бы сразу логика понятна: операция приводит оба операнда к типу данных первого.

Вот поинтереснее:

16

Ты пытаешь к строке прибавить число? Ок, язык преобразовывает число в строку и складывает

Ты пытаешься к числу прибавить строку? Ок, язык преобразовывает строку в число и складывает.