yes, you may perform the elementary row-operations in any order you wish. if you don't mind some messy fractions, this is what i do:
1. multiply the first row so that the first entry is 1 (if the first entry is 0, swap with a row that has a non-zero first entry first).
2. make the first column 0, below the 1.
3. make the second entry in the second row 1 (if it is 0, swap with some other row below it that has a a non-zero 2nd entry).
4. clear out the second column, except for the leading one in row 2 (it may happen that the 2nd column is already all 0, in which case i turn my attention to columns 3).
5. repeat, moving diagonally down.
you may see some short-cuts along the way that cause you to work "out-of-order" (such as two rows being equal or obvious multiples at an early stage).
your (unaugmented) matrix has 6 columns and 4 rows, which translates to 6 variables and 4 equations. this system is "under-determined" so it is likely you will have to arbitrarily set one or more variables to something, in order to get values for the rest. these variables are "free variables", as you can choose them how you please- once chosen, the other variables are determined, so they are "bound variables". it is common to denote the free variables as parameters and write s,t,u,.... etc. for them, given the other bound variables in terms of these. for example,
x1 + x3 = 3
x2 - x3 = 0
(this corresponds to the rref:
is "free" in x3, and any solution can be written (3-t,t,t) or (3,0,0) + t(-1,1,1).