Why must 'var removed' line come first?

Why doesn’t the challenge work if the line of code ‘arr.push(item)’ comes after the line of code ‘var removed=arr.shift()’?
It only works if ‘var removed=arr.shift()’ comes first

Your code so far

function nextInLine(arr, item) {
// Only change code below this line

var removed=arr.shift();
return removed;
// Only change code above this line


// Setup
var testArr = [1,2,3,4,5];

// Display code
console.log("Before: " + JSON.stringify(testArr));
console.log(nextInLine(testArr, 6));
console.log("After: " + JSON.stringify(testArr));

Your browser information:

User Agent is: Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.163 Safari/537.36.

Challenge: Stand in Line

Link to the challenge:

Because the arr array should always have the same length after the function is executed. This matters in the case of arr being an empty array. It’s one of the test cases.

nextInLine([], 1) should return 1

Let’s execute this with your code:

// arr: [], item: 1
var removed = arr.shift(); // removed: undefined
arr.push(item);            // arr: [1]
return removed;            // return undefined

Thanks bud, I get it now!