vec * array uses vec's mul, which can be written to handle arrays. However, array * vec uses arrays' mul, which doesn't always do what a user wants on the vector (namely it broadcasts the multiplication onto every element of mul, potentially). We should add documentation that says to do array * vec, it's best to actually wrap the array into a vec so the operation is vec * vec.