ǀ
and ǀǀ
are (Unicode) variable names.
Space it out:
var ǀ = 1;
var ǀǀ = 21;
var s = ǀǀ + (ǀ == ǀ-- > ǀ + ǀ < --ǀ == ǀ) + ǀǀ;
Apply operator precedence and associativity:
var ǀ = 1;
var ǀǀ = 21;
var s = (ǀǀ + ((ǀ == ((ǀ-- > (ǀ + ǀ)) < --ǀ)) == ǀ)) + ǀǀ;
Apply order of evaluation:
var a = ǀǀ + ((ǀ == ((ǀ-- > (ǀ + ǀ)) < --ǀ)) == ǀ);
var s = a + ǀǀ;
var b = (ǀ == ((ǀ-- > (ǀ + ǀ)) < --ǀ)) == ǀ;
var a = ǀǀ + b;
var c = ǀ == ((ǀ-- > (ǀ + ǀ)) < --ǀ);
var b = c == ǀ;
var d = (ǀ-- > (ǀ + ǀ)) < --ǀ;
var c = ǀ == d;
var e = ǀ-- > (ǀ + ǀ);
var d = e < --ǀ;
var g = ǀ--;
var f = ǀ + ǀ;
var e = g > f;
Evaluate:
var ǀ = 1;
var ǀǀ = 21;
var g = ǀ--;
var f = ǀ + ǀ;
var e = g > f;
var d = e < --ǀ;
var c = ǀ == d;
var b = c == ǀ;
var a = ǀǀ + b;
var s = a + ǀǀ;
var ǀ = 0;
var ǀǀ = 21;
var g = 1;
var f = ǀ + ǀ;
var ǀ = 0;
var ǀǀ = 21;
var f = 0 + 0;
var e = g > f;
var ǀ = 0;
var ǀǀ = 21;
var e = 1 > 0; // true
var d = e < --ǀ;
var ǀ = -1;
var ǀǀ = 21;
var d = true < -1; // false
var c = ǀ == d;
var ǀ = -1;
var ǀǀ = 21;
var c = -1 == -1; // true
var b = c == ǀ;
var ǀ = -1;
var ǀǀ = 21;
var b = true == -1; // false
var a = ǀǀ + b;
var ǀ = -1;
var ǀǀ = 21;
var a = 21 + false; // 21
var s = a + ǀǀ;
var ǀ = -1;
var ǀǀ = 21;
var s = 21 + 21; // 42