float4x4 * float4x4 VS math.mul(float4x4, float4x4) or Operator overrides VS Math static methods

I ended up wasting the time on debugging the code which was semantically ok, but I was using wrong methods for the second time in two weeks. Shame on me, I should have learned the first time. The problem is that I was trying to multiply two float4x4 instances with lh * rh instead of math.mul(lh, rh)

I have noticed that types used by math library i.e. float4, float3, float4x4 have both, operator overrides and statics methods for arithmetical operations. Aside from the fact that operator override does not produce valid value in this example, what is the reason for having both of them and which one should do what?

Thanks, this is a great video all together!

To sum it up for anyone just glancing over this thread, if you want to do standard algebra operations, then you should use static methods like math.mul() or so. On the other hand, operator overrides are per element operations and are aimed towards SIMD (single instruction multiple data) operations, which I’m not familiar with ATM.