Hi @happyClam, thanks for your question!
Your logic is good in the second example, but you are not using the correct relational operator.
In Javascript you can check for equality/inequality in four ways:
a == b // equality operator = checks for equality ,('1' == 1) would evaluate to 'true
a === b // strict equality operator = checks for equality of data types as well, ('1' === 1) would evaluate to 'false', since '1' is a string and 1 is an integer
a != b // inequality operator = checks if the two variables are different
a !== // strict inequality operator = perceives different data types as not equal
The condition in an if statement can be represented in 2 ways - either ‘true’/‘false’ or (any number)/0, which are functionally the same.
Let’s now look at your problem. You have to run updateTaskContainer() if taskData is NOT empty.
So in your first example you’re actually running the code when taskData is empty
if(taskData.length === 0) { // evaluates to TRUE if taskData is empty
updateTaskContainer();
}
In your second example the logic is correct, you want to run the code when taskData is empty but you’re using different logic than the task requires.
if(taskData.length !== 0) {
updateTaskContainer();
}
You just need to provide the length in the condition and let it evaluate.
if(taskData.length) {
updateTaskContainer();
}
Because if taskData.length is 0, that’s a false, any other value is evaluated as ‘true’.
Hope this gets you moving forward again 
Have a nice day!