Nested Conditionals Homework: Javascript

Complete the following three problems to practice working with nested conditionals. Each problem increases in difficulty. All problems must be completed in JavaScript.

Problem 1: Complete the Shipping Cost Calculator (Easy)

An online store calculates shipping costs based on the order total and membership status. The partially completed code below needs to be finished.

Rules:

  • If order total is $50 or more:
    • Free shipping for members
    • $5 shipping for non-members
  • If order total is less than $50:
    • $3 shipping for members
    • $8 shipping for non-members

Your task: Complete the nested conditional so that when you run the code with the given initial values (orderTotal = 45 and isMember = true), the output shows a shipping cost of $3.

%%js
// Initial conditions - DO NOT CHANGE THESE
let orderTotal = 45;
let isMember = true;
let shippingCost = 0;

console.log(`Order Total: $${orderTotal}`);
console.log(`Member: ${isMember}`);

// YOUR CODE HERE: Complete the nested conditional
if (orderTotal >= 50) {
    shippingCost = 0;
    
} else {
    if (isMember) {
        shippingCost = 3;
    } else {
        shippingCost = 5;
    }
}

console.log(`Shipping Cost: $${shippingCost}`);

// Expected output with given values: Shipping Cost: $3
<IPython.core.display.Javascript object>

Problem 2: Build a Restaurant Recommendation System (Medium)

Create a system that recommends a restaurant based on the user’s budget and cuisine preference.

Requirements:

  • If budget is “high” (over $30 per person):
    • If cuisine is “italian”: recommend “Bella Notte”
    • If cuisine is “japanese”: recommend “Sakura Palace”
    • For any other cuisine: recommend “The Grand Bistro”
  • If budget is “medium” ($15-$30 per person):
    • If cuisine is “italian”: recommend “Mario’s Pizzeria”
    • If cuisine is “japanese”: recommend “Tokyo Express”
    • For any other cuisine: recommend “Downtown Diner”
  • If budget is “low” (under $15 per person):
    • Recommend “Food Court” regardless of cuisine preference

Your task: Write the complete nested conditional structure. Store the recommendation in the recommendation variable.

%%js
// Test variables
let budgetPerPerson = 25;
let cuisine = "japanese";
let recommendation = "";

console.log(`Budget per person: $${budgetPerPerson}`);
console.log(`Preferred cuisine: ${cuisine}`);

// YOUR CODE HERE: Write the complete nested conditional
if (budgetPerPerson >= 30) {
  if (cuisine === "italian") {
    recommendation = "Bella Notte";
  } else {
    recommendation = "Downtown Diner";
  }
} else if (budgetPerPerson >= 20) {
  if (cuisine === "japanese") {
    recommendation = "Tokyo Express";
  } else if (cuisine === "mexican") {
    recommendation = "Downtown Diner";
  } else {
    recommendation = "Food Court";
  }
} else {
  recommendation = "Food Court";
}

console.log(`\nRecommendation: ${recommendation}`);
// Expected output with given values: Recommendation: Tokyo Express
<IPython.core.display.Javascript object>

Problem 3: Design a Smart Home Thermostat System (Hard)

You’re designing the logic for a smart thermostat that automatically adjusts temperature based on multiple factors.

Word Problem:

The thermostat needs to decide what action to take based on:

  • Current temperature
  • Whether anyone is home
  • Time of day (represented as “day” or “night”)
  • Energy saving mode (on or off)

Logic Requirements:

  1. If someone is home:
    • During the day:
      • If temp is above 75°F: set action to “cooling” and targetTemp to 72
      • If temp is below 68°F: set action to “heating” and targetTemp to 70
      • Otherwise: set action to “maintaining” and keep current temp
    • During the night:
      • If temp is above 72°F: set action to “cooling” and targetTemp to 68
      • If temp is below 65°F: set action to “heating” and targetTemp to 68
      • Otherwise: set action to “maintaining” and keep current temp
  2. If no one is home:
    • If energy saving mode is ON:
      • If temp is above 80°F: set action to “cooling” and targetTemp to 78
      • If temp is below 60°F: set action to “heating” and targetTemp to 62
      • Otherwise: set action to “off” and targetTemp to current temp
    • If energy saving mode is OFF:
      • Set action to “maintaining” and targetTemp to 70

Your task: Design the complete nested conditional algorithm from scratch. You’re given the framework below with initial values, but NO code. Write the entire logic yourself.

%%js
// Test variables
let currentTemp = 78;
let isHomeOccupied = true;
let timeOfDay = "day";  // "day" or "night"
let energySavingMode = false;

// Variables to set
let action = "";  // Will be "heating", "cooling", "maintaining", or "off"
let targetTemp = currentTemp;

console.log("=== Smart Thermostat Status ===");
console.log(`Current Temperature: ${currentTemp}°F`);
console.log(`Home Occupied: ${isHomeOccupied}`);
console.log(`Time of Day: ${timeOfDay}`);
console.log(`Energy Saving Mode: ${energySavingMode}`);
console.log();

// YOUR CODE HERE: Write the complete nested conditional algorithm
if (isHomeOccupied) {
  // Home is occupied
  if (energySavingMode) {
    // Energy saving ON while occupied
    if (timeOfDay === "day") {
      targetTemp = 74;
    } else {
      targetTemp = 66;
    }
  } else {
    // Energy saving OFF (normal comfort mode)
    if (timeOfDay === "day") {
      targetTemp = 72;
    } else {
      targetTemp = 68;
    }
  }
} else {
  // Home is NOT occupied
  if (energySavingMode) {
    if (timeOfDay === "day") {
      targetTemp = 78;
    } else {
      targetTemp = 70;
    }
  } else {
    if (timeOfDay === "day") {
      targetTemp = 75;
    } else {
      targetTemp = 70;
    }
  }
}

// Decide what the thermostat should do
if (currentTemp > targetTemp) {
  action = "cooling";
} else if (currentTemp < targetTemp) {
  action = "heating";
} else {
  action = "maintaining";
}

console.log("=== Thermostat Action ===");
console.log(`Action: ${action}`);
console.log(`Target Temperature: ${targetTemp}°F`);
<IPython.core.display.Javascript object>

Reflection Questions

After completing all three problems, answer these questions:

  1. Which problem was the most challenging and why?
  2. How did you decide on the structure of your nested conditionals in Problem 3?
  3. Can you think of a real-world situation where you would need even MORE levels of nesting than Problem 3?