Operator precedence is SQL-like (not Java-like). When
there is more than one logical operator in a statement, and they are not
explicitly grouped using parentheses, NOT is evaluated
first, then AND, and finally OR.
The following shows the operator precedence from highest to lowest:
" [, ], <, > () ~ (prefix and postfix), = ^ +, |, - NOT, AND OR
AND and OR can be combined with +, |, - with the following meanings:
| AND (no prefix is the same as +) | Explanation |
|---|---|
| big AND dog | big and dog must occur |
| +big AND +dog | big and dog must occur |
| big AND +dog | big and dog must occur |
| +big AND dog | big and dog must occur |
| big AND |dog | big must occur and dog should occur |
| |big AND dog | big should occur and dog must occur |
| |big AND |dog | both big and dog should occur, and at least one must match |
| big AND -dog | big must occur and dog must not occur |
| -big AND dog | big must not occur and dog must occur |
| -big AND -dog | both big and dog must not occur |
| |big AND -dog | big should occur and dog must not occur |
| OR (no prefix is the same as +) | Explanation |
|---|---|
| dog OR wolf | dog and wolf should occur, and at least one must match |
| +dog OR +wolf | dog and wolf should occur, and at least one must match |
| dog OR +wolf | dog and wolf should occur, and at least one must match |
| +dog OR wolf | dog and wolf should occur, and at least one must match |
| dog OR |wolf | dog and wolf should occur, and at least one must match |
| |dog OR wolf | dog and wolf should occur, and at least one must match |
| |dog OR |wolf | dog and wolf should occur, and at least one must match |
| dog OR -wolf | dog should occur and wolf should not occur, one of the clauses must be valid for any result |
| -dog OR wolf | dog should not occur and wolf should occur, one of the clauses must be valid for any result |
| -dog OR -wolf | dog and wolf should not occur, one of the clauses must be valid for any result |