If someone tells you to list every math operation you know, you might tell them: addition, subtraction, multiplication and division. And you would be right. Each of these are math operations. But to a programming language, these are the least used math operators in existence.
When a programming language goes to evaluate an expression, it must deal with a variety of math operators. Each of these math operators has a common behavior: it takes 2 values (on the left and on the right) and spits out a single value (the result of the operation).
Basic arithmetic operators all fit this description. And if you were to write a programming language, you could very easily model those operators after this behavior. However, it would be a big waste to forget 3 other operators that have this very same behavior: equals, and, and or.
If you think about the ‘==’ operator (or equality operator), it takes the value on the left and compares it to the one on the right. If both are equal, it outputs a single value: boolean true. The same can be said for ‘and’ and ‘or’. Both look at the values on the left and right of them and output true or false, based on the keyword in use.
If you look at SomeLanguage, you’ll see that all of these math operations are implemented using a single MathOperation behavior that allows expressions to be evaluated very easily.