Try using CFrame.fromOrientation instead. It will change the actual CFrame as it will do the rotation on the Y axis first then on the X axis (unlike .Angles which is the inverse)

CFrames contain both position and orientation, and if you understand them well, they basically replace the position property of objects, and especially orientation (CFrames are much more useful than Euler angles). They are harder to understand though

Something else to note is that the order in which you do your operations matters, for example, here is the difference between doing the angle first, or the position first:

(I didnâ€™t bother write math.rad in this figure)
CFrame math is always â€śrelativeâ€ť. In the case where the orientation is done first, then the position, the position is relative to that orientation, making it to 10 studs at 45Â°. This leads to different results depending on the order of operations