Backward function basic question

Hi,
In the autograd tutorial (A Gentle Introduction to torch.autograd — PyTorch Tutorials 2.2.0+cu121 documentation) - it says o = 1/4(sum(zi) and zi = 3*(x+3)^2 but then it says do/dx = 3/2(x+2) but dz/dx = 3/2(x+2) - so why is do/dx is being called same as dz/dx?

Also if I call backward on z with gradients = [[1,1],[1,1]], then x.grad = [[18,18],[18,18]]

becase dz_j / dx_i = 0 for j != i