I'm not very knowledgeable about math at all, so I had to look this up and I'll save you the time if you don't know what this is either.
Alright, was actually very confused by this at first, but looking it up it's very simple.
To put it simply (aka I'm stealing from the ELI5 reddit):
In math binary operations are what you usually call operations. Addition(+), subtraction(-), multiplication(*), division(/), etc. Binary means there are two numbers you put in to make a new operation.
Unary operations then again only take 1 number and then make it into some other number. Taking square root of a number would be an example of unary operation. You input just one number, the one whose square root you want to find out. Another could be sin(x). You input angle whose sine value you want to find out. Yet another example would be absolute value(|x|). Vector length(||x||) works just as well.
Or if you want an even simpler example,
3 − −2
(+2) = 2
But that's just Unary operations, what is "unary minus operator precedence"?
It has to do with how you learned to work problems in Algebra.
Do you remember PEMDAS?
Only problem with PEMDAS is that it doesn't explicitly say how to handle unary operators. Do you manage those first, or after? Does it really even matter when?
I looked it up, and I got this result: http://mathforum.org/library/drmath/view/53194.html
There's a lot of data on that page, but it does the best job of explaining unary operations and programming in different languages and programs. If you don't want to click the link (and you really should) I'll just say that it depends on what language you're working in, and there's certain exceptions to when unary operations are handled differently, either before or after.
Which makes me all the more curious, how will it be handled in the lazer projector expression code?
If you see anything wrong with what I said, don't be afraid to mention it at all, it's late for me and I've had a lot of caffeine.