Operator Precedences for parenthesis.
A high number means means we are likely to add parenthesis
| Number | Property | Symbols | Notes |
|--:|--|--|--|
| 26 | | inside interpolation context ("") | TODO |
| 25 | left | terms and list operators (leftward)|
| 24 | left | -> | |
| 23 | nonassoc | ++, -- | |
| 22 | right | ** |
| 21 | right | !, ~, \, unary + and - | |
| 20 | left | =~, !~ | |
| 19 | left | *, /, %, x | |
| 18 | left | +, -, . | |
| 17 | left | <<, >> | |
| 16 | nonassoc | named unary operators | |
| 15 | nonassoc | <, >, <=, >=, lt, gt, le, ge | |
| 14 | nonassoc | ==, !=, <=>, eq, ne, cmp | |
| 13 | left | & | |
| 12 | left | ^ | |
| 11 | left | && | |
| 10 | left | \\ | |
| 9 | nonassoc | .. ... | |
| 8 | right | ?: | |
| 7 | right | =, +=, -=, *=, etc. | |
| 6 | left | ,, => | |
| 5 | nonassoc | list operators (rightward) | |
| 4 | right | not | |
| 3 | left | and | |
| 2 | left | or, xor | |
| 1 | | statement modifiers | |
| 0.5 | | statements | but still print scopes as do { ... } | |
| 0 | | statement level | |
| -1 | | format body | |