# Implementing experience replay in reinforcement learning

I've been reading Google's DeepMind Atari paper and I'm trying to understand how to implement experience replay. My question is that whether we update the parameters $\theta$ of function $Q$ once for all the samples of the minibatch or we do that for each sample of the minibatch separately?

According to the following code from this paper, it performs the gradient descent on loss term for the $j$-th sample. However, I have seen other papers (referring to this paper) that say that we first calculate the sum of loss terms for all samples of the minibatch and then perform the gradient descent on this sum of losses.

This is in fact also how I read the pseudocode in your question, though I understand it can be confusing. Note that, in the pseudocode, j is not specified in detail. They do not, for example, have j ranging from 0 to the size of the minibatch.
Sample random minibatch of transitions (phi_j, a_j, r_j, phi_{j+1}) from D
they mean multiple transitions in the minibatch (with minibatch size of 1 being a special case), and they use the index j to collectively refer to the entire set of indices in that randomly sampled minibatch. It's not one particular number / index, j is a set of indices. When further lines of code do something with index j, they actually do something with all indices j.