var a = 42; var b = "foo"; a && b; // "foo" a || b; // 42
var a = 42; var b = "foo"; var c = [1,2,3]; a && b || c; // 'foo' a || b && c; // 42
a ? b : c ? d : e;
• a ? b : (c ? d : e)
• (a ? b : c) ? d : e
a && b || c ? c || b ? a : c && b : a
a && b || (c ? c || (b ? a : c) && b : a)
(a && b || c) ? (c || b) ? a : (c && b) : a