I'd argue that c style operators are better than writing the expression out because it reduces complexity and can avoid errors:
x *= a+b;
// VS
x := x*(a+b);
When you read the expression left to right after reading the second symbol you already know that x will be multiplied by some value. In the second example you may think you only need to read 2 more tokens, but thats also oversimplified. Consider the following:
Now the whole semantic changed, this is not just multiplying x with something, it does a multiplication plus addition.
Thinking about graphical development *= clearly indicates scaling while an arbitrary expression can combine scaling (multiplication) with translation (addition). So you always need to parse the whole expression to know whats going on.
Also note that this requires bracketing due to operator precendece, which makes the expressions more complex and easier to make errors.
C style operators reduce complexity and thereby cognetive load.