oper - __neg prefix 30 oper * __pnt prefix 60 oper == __eq infix none 20 oper != __ne infix none 20 oper < __lt infix none 20 oper > __gt infix none 20 oper <= __le infix none 20 oper >= __ge infix none 20 oper + __add infix left 30 oper - __sub infix left 30 oper * __mul infix left 40 oper / __div infix left 40 oper % __mod infix left 40 # Nobody likes low-precedence & | oper & __and infix none 35 oper | __or infix none 35 oper ^ __xor infix none 35 oper ~ __not prefix 50 # Shifts are like multiply/divide and should have the same precedence oper << __shl infix left 40 oper >> __shr infix left 40