you will sometimes need to add parentheses when using combinations
of binary and unary operators. For instance
-SELECT 5 ! + 6;
+SELECT 5 ! - 6;
will be parsed as
-SELECT 5 ! (+ 6);
+SELECT 5 ! (- 6);
because the parser has no idea -- until it is too late -- that
! is defined as a postfix operator, not an infix one.
To get the desired behavior in this case, you must write
-SELECT (5 !) + 6;
+SELECT (5 !) - 6;
This is the price one pays for extensibility.