var y = 1; // y === 1
var x = y = typeof x; // x = 'undefined', y = 'undefined'
alert(x + 1); // 'undefined' + 1 == 'undefined1'
ибо typeof x - строка.
alert([] + false - null + true);
Результатом будет:
"" + false = "false"
"false" - null = +"false" - +null
NaN - 0 = NaN
NaN + true = NaN
Оператор вычитания пытается преобразовать к числу. (как я понял).
alert("5" - "1");
p.s ответы могут быть не точны.