3 + true == 4

Я не шучу. В JavaScript, когда оператор + находится между числом и булевым значением, последний конвертируется в число.

В этих случаях и false == 0. Учитывая это, 3 + true конвертируется в 3 + 1 и следовательно мы получаем ответ 4.

3 + true  // 4
3 - true  // 2
3 + false  // 0
3 - false  // 0
3 + 1 - true  // 3
3 - false + true  // 4

True + False

Это следует такой же логике как в примере выше. Когда оператор + размещен между двумя булевыми значениями, они конвертируются в числа. Следовательно, true + false конвертируется в 1 + 0 и в итоге мы получаем ответ 1.

'4' + 8

Что случается когда мы добавляем число в строке к обычному числу? Когда оператор + находится между этими двумя операндами и один из них является строкой, это сконвертирует другое число или булево значение в строку и свяжет их.

Следуя этой логике, '4' + 8 становится '4' + '8' и мы получаем ответ '48'.

true + '4'

Так же как и в примере выше, JavaScript сконвертирует boolean в сточное значение и свяжет его. Это станет 'true' + '4' и результатом будет 'true4'.

1 + 1 + '1'

Порядок операций очень важен. В этом примере, JavaScript считает первый + перед чем либо ещё, что ведет к 1 + 1 = 2. Далее мы добавляем строчной значение '1'. Происходит связывание и как результат мы получаем '21'.

'1' + 1 + 1

Что меняется, когда у нас есть строчное значение на первом месте? Помните о порядке операций и работайте слева на право.

string + number = string

В этом случае у нас останется только одна длинная строка '111'.

-'69' + 69

Что если мы попытаемся инвертировать в минус строку и затем добавить число? Как вы должны знать к этому моменту, без минуса, наш ответ был бы '6969'. Тем не менее минус все меняет.

Знак минус перед '69' это унарный оператор минуса, который на самом деле сконвертирует строку в число и сделает его отрицательным. Следовательно, наше уравнение станет -69 + 69, что будет равно 0.

-'giddyup' + 409

Что если наш унарный оператор минуса будет перед строкой, которая не может быть сконвертирована в число? Когда JavaScript не может сделать число, мы остаемся только с NaN, что означает, то что это не число.