Optional grouping parentheses are omitted only when the author and revieweragree that there is no reasonable chance that the code will be misinterpretedwithout them, nor would they have made the code easier to read. It is _not_reasonable to assume that every reader has the entire operator precedence tablememorized.

Do not use unnecessary parentheses around the entire expression followingdelete, typeof, void, return, throw, case, in, of, or yield.

Parentheses are required for type casts: /* @type {!Foo} / (foo).