'*' is a component-wise multiplication.

float4 a, b; float4 c = a*b; //c = (a.x*b.x,a.y*b.y,a.z*b.z, a.w*b.w)When you multiply float by float4, the result is float4. The float will be broadcasted to float4.

float a; float4 b; float4 c = a*b; //c = (a*b.x,a*b.y,a*b.z,a*b.w)