So if you want concise precedence that isn't an a priori lookup table, there's... a thing, you can do.
assert(4+1 * 3 == 15)
assert(4 + 1*3 == 7)
Allow a layer of implicit paren-ish grouping for non-whitespaced operators, and within groups, operations flow left to right.
assert(4+1*3 == 15)
What about unbalanced whitespace? Well, this is used for unary postfix and prefix operators, which are allowed to have distinct behavior, but some have obvious choices.
assert(-1 == 2-3)
assert(5 + -1 == 4)
The crazy thing is this gives us unambiguous dereference syntax for free, for things that need it.
