Automatic Differentiation Explained