angle add constant at vector3

I want to change mine y axis angle 20 degree less than exact angle, so i wrote the code as below

transform.rotation = Quaternion.Euler(transform.eulerAngles.x,transform.eulerAngles.y - 20f,transform.eulerAngles.z);

But the object keep rotating! How does it happen? What did I misunderstanding??

Why not use the Transform.Rotate() ?

transform.Rotate(0f, -20f, 0f, Space.Self)

Move this code out of the Update() method into the Start() or even it’s own method, then call it only once.