Can someone explain the logic of this line of code?

I’ve seen this on several Scripts but i had no idea of how it worked…
This time i found this on Ugh_Lily’s Admin Panel.

local IsPlayerBanned = GameFunction:InvokeServer("CheckBan", DataTable.UnbanUserID)
IsPlayerBanned = IsPlayerBanned and "Yes" or "No"

Now this is what i can’t understand:

IsPlayerBanned = IsPlayerBanned and "Yes" or "No"

I need someone to fully explain how it works and the logic behind it, this could be handy in the future :slight_smile:

1 Like

It’s essentially a short-form condition statement. If IsPlayerBanned is true, then it will set it as “Yes”, otherwise “No”

This is for turning a boolean into a Yes/No for showing to the user.

2 Likes

The and part would return And if the value of IsPlayerBanned was Yes and the or part would return No if the previous part was not Yes

1 Like

This is a faked ternary statement because Lua does not have an explicit ternary operator. Afaik boolean expressions in Lua will return the last truthy value in an evaluated boolean expression, or else false.

and has a higher precedence than or so the first two operands are evaluated first, returning “yes”. Strings are truthy so the evaluation quits at the or and “no” isn’t returned. If the first two operands evaluated to false, then “no” would be returned because it’s the last truthy value in the expression after the first two operands collapse to false and the or is done.

7 Likes

The Lua PiL has some useful information on this, Source: Programming in Lua : 3.3

The PiL is good for answering any other Lua-specific questions you may have, like coroutines and classes. You should still look into the dev hub for Luau / just Roblox specific stuff though, like events or its API Reference.

4 Likes