[1]
Conditionals in full JavaScript accept any value, not just a boolean, as the result of evaluating the $predicate$ expression (see footnote 1 in section 4.1.3 for details). The programs in this book use only boolean values as predicates of conditionals.
[2]
For now, we restrict these operators to number arguments. In sections 2.3.1 and 3.3.1, we shall generalize the equality and inequality predicates === and !==.
[3]
This assumption is justified by the restriction mentioned in footnote undefined. Full JavaScript needs to consider the case where the result of evaluating $expression$$_1$ is neither true nor false.
[4]
Syntactic forms that are simply convenient alternative surface structures for things that can be written in more uniform ways are sometimes called syntactic sugar, to use a phrase coined by Peter Landin.
1.1.6  
Conditional Expressions and Predicates