I can't understand how back propagation works in neural networks. Explain in a clear language how back propagation works, give formulas for calculating the weights of neurons on each layer, starting from the last one. Give an example using Python code.