I'm not sure what is happening after I apply a value to a dictionary

So, I’m trying to check if the game needs to stop if a team gets 4 points, but for some reason its clearing the value after the script puts the value into the dictionary. I don’t know what is going on, so any help will be appreciated.

Script:

local values = {
	["Red"] = 0;
	["Blue"] = 0
}

for i, v in pairs(game.Teams:GetDescendants()) do
	if v:IsA("NumberValue") then
		values[v.Name] = v.Value
		print(v.Parent.Name..": "..values[v.Name])
	end
end
--something happens here that makes the values = nil but i didn't put 
--anything here
print("| "..values.Red.."| "..values.Blue.."| "..val.Value.." |")

The Prints:
image

I don’t think there is a NumberValue in game.Teams

i added one sorry i forgot to add a pic of the hierarchy

It seems like your referencing your old table, hence it prints 0.
I would suggest doing something like:

local Teams = game:GetService("Teams")

for i,v in pairs(game.Teams:GetDescendants()) do
    	if v:IsA("NumberValue") then
    		for key, value in pairs(values) do
    			values[key] = Teams[key].Value.Value
    		end
    	end
    end