Use grouping parenthesis to make the operator precedence explicit


The problem

The Google Java Style Guide ยง4.7 states:

Optional grouping parentheses are omitted only when author and reviewer agree that there is no reasonable chance the code will be misinterpreted without them, nor would they have made the code easier to read. It is not reasonable to assume that every reader has the entire Java operator precedence table memorized.

Use grouping parentheses to disambiguate expressions that could be misinterpreted.

For example, consider this:

boolean d = (a && b) || c;",
boolean e = (a || b) ? c : d;",
int z = (x + y) << 2;",

Instead of this:

boolean r = a && b || c;",
boolean e = a || b ? c : d;",
int z = x + y << 2;",


Suppress false positives by adding the suppression annotation @SuppressWarnings("OperatorPrecedence") to the enclosing element.